﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

namespace ivv.relatorios
{
    public partial class relatorioQuantitativoOfertasQuartosAreas : System.Web.UI.Page
    {
        public string relatorio;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SqlConnection conexaoNovaSelect = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                conexaoNovaSelect.Open();

                string selectAno = "select distinct anoIvv FROM ivv order by anoIvv desc";

                SqlCommand cmd = new SqlCommand(selectAno, conexaoNovaSelect);
                SqlDataReader dr = cmd.ExecuteReader();

                ListItem comeco = new ListItem();

                comeco.Text = "Selecione um ano";
                comeco.Value = "nulo";

                lstAno.Items.Add(comeco);

                int cont = 0;

                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        ListItem dados = new ListItem();

                        dados.Text = dr["anoIvv"].ToString();
                        dados.Value = cont.ToString();

                        lstAno.Items.Add(dados);

                        cont++;
                    }
                }

                dr.Close();

                conexaoNovaSelect.Close();
            }
        }

        public string pegarMes(int mes)
        {
            string textoMes = "";

            switch (mes)
            {
                case 1: textoMes = "Janeiro";
                    break;
                case 2: textoMes = "Fevereiro";
                    break;
                case 3: textoMes = "Março";
                    break;
                case 4: textoMes = "Abril";
                    break;
                case 5: textoMes = "Maio";
                    break;
                case 6: textoMes = "Junho";
                    break;
                case 7: textoMes = "Julho";
                    break;
                case 8: textoMes = "Agosto";
                    break;
                case 9: textoMes = "Setembro";
                    break;
                case 10: textoMes = "Outubro";
                    break;
                case 11: textoMes = "Novembro";
                    break;
                default: textoMes = "Dezembro";
                    break;
            }
            return textoMes;
        }

        protected void lstAno_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstMes.Items.Clear();

            ListItem comeco = new ListItem();

            comeco.Text = "Selecione um mês";
            comeco.Value = "nulo";

            lstMes.Items.Add(comeco);

            for (int i = 1; i < 13; i++)
            {
                ListItem dados = new ListItem();

                dados.Text = pegarMes(i);
                dados.Value = i.ToString();

                lstMes.Items.Add(dados);
            }
        }

        protected void btnGerar_Click(object sender, EventArgs e)
        {
            if (lstAno.SelectedValue != "nulo")
            {
                if (lstMes.SelectedValue != "nulo")
                {
                    if (lstTipo.SelectedValue != "0")
                    {
                        carregarDados(Convert.ToInt16(lstAno.SelectedItem.Text), lstMes.SelectedValue);

                        Panel1.Visible = true;
                    }
                    else
                    {
                        //mensagem java script
                        string literalcc = "<script language=JavaScript>mensagem('Informe o tipo');</script>";
                        Panel2.Controls.Add(new LiteralControl(literalcc));
                        lstTipo.Focus();
                    }
                }
                else
                {
                    //mensagem java script
                    string literalcc = "<script language=JavaScript>mensagem('Informe o mês');</script>";
                    Panel2.Controls.Add(new LiteralControl(literalcc));
                    lstMes.Focus();
                }
            }
            else
            {
                //mensagem java script
                string literalcc = "<script language=JavaScript>mensagem('Informe o ano');</script>";
                Panel2.Controls.Add(new LiteralControl(literalcc));
                lstAno.Focus();
            }
        }

        void carregarDados(int ano, string mes)
        {
            string vRelatorio = "";
            List<string> bairros = new List<string>();

            totais t = new totais();
            for (int i = 1; i < 5; i++)
            {
                double totalI = 0;
                double totalII = 0;
                double totalIII = 0;
                double totalIV = 0;

                if (i == 1)
                {
                    #region
                    relatorio = "<table id=\"relat1\" width=\"100%\" border=\"2\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#ffffff\">";
                    relatorio += "<tr>";
                    relatorio += "<th width=\"10%\">ÁREA</th>";
                    relatorio += "<th width=\"6%\">QUANTIDADE</th>";
                    relatorio += "<th width=\"4%\">%</th>";
                    relatorio += "<th width=\"6%\">BAIRROS</th>";
                    relatorio += "<tr>";
                    #endregion

                    List<double> quantidades = new List<double>();

                    #region
                    int ii;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        double quantidade = 0;

                        if (ii != 260)
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até " + (ii + 20) + " m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 1, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalI += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 1, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }

                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                        else
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até ∞ m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 1, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalI += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 1, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                    }
                    #endregion

                    relatorio += "<tr>";
                    relatorio += "<th>TOTAL</th>";
                    relatorio += "<th>" + totalI + "</th>";
                    relatorio += "<th>100%</th>";
                    relatorio += "<th></th>";
                    relatorio += "<tr>";

                    int cont = 0;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        relatorio = relatorio.Replace("n" + ii + "%", Math.Round((quantidades[cont] * 100 / totalI), 2).ToString() + "%");
                        cont++;
                    }

                    relatorio += "</table>";
                    relatorio += "<script type=\"text/javascript\"> ";
                    relatorio += "$(function(){ ";
                    relatorio += "$('table#relat1 tr:even').css('background','#E8E8E8'); ";
                    relatorio += "}); ";
                    relatorio += "</script> ";
                    PanelIQuarto.Controls.Add(new LiteralControl(relatorio));
                }
                else if (i == 2)
                {
                    #region
                    relatorio = "<table id=\"relat2\" width=\"100%\" border=\"2\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#ffffff\">";
                    relatorio += "<tr>";
                    relatorio += "<th width=\"10%\">ÁREA</th>";
                    relatorio += "<th width=\"6%\">QUANTIDADE</th>";
                    relatorio += "<th width=\"4%\">%</th>";
                    relatorio += "<th width=\"6%\">BAIRROS</th>";
                    relatorio += "<tr>";
                    #endregion

                    List<double> quantidades = new List<double>();

                    #region
                    int ii;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        double quantidade = 0;

                        if (ii != 260)
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até " + (ii + 20) + " m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 2, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalII += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 2, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                        else
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até ∞ m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 2, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalII += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 2, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                    }
                    #endregion

                    relatorio += "<tr>";
                    relatorio += "<th>TOTAL</th>";
                    relatorio += "<th>" + totalII + "</th>";
                    relatorio += "<th>100%</th>";
                    relatorio += "<th></th>";
                    relatorio += "<tr>";

                    int cont = 0;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        relatorio = relatorio.Replace("n" + ii + "%", Math.Round((quantidades[cont] * 100 / totalII), 2).ToString() + "%");
                        cont++;
                    }

                    relatorio += "</table>";
                    relatorio += "<script type=\"text/javascript\"> ";
                    relatorio += "$(function(){ ";
                    relatorio += "$('table#relat2 tr:even').css('background','#E8E8E8'); ";
                    relatorio += "}); ";
                    relatorio += "</script> ";
                    PanelIIQuarto.Controls.Add(new LiteralControl(relatorio));
                }
                else if (i == 3)
                {
                    #region
                    relatorio = "<table id=\"relat3\" width=\"100%\" border=\"2\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#ffffff\">";
                    relatorio += "<tr>";
                    relatorio += "<th width=\"10%\">ÁREA</th>";
                    relatorio += "<th width=\"6%\">QUANTIDADE</th>";
                    relatorio += "<th width=\"4%\">%</th>";
                    relatorio += "<th width=\"6%\">BAIRROS</th>";
                    relatorio += "<tr>";
                    #endregion

                    List<double> quantidades = new List<double>();

                    #region
                    int ii;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        double quantidade = 0;

                        if (ii != 260)
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até " + (ii + 20) + " m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 3, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalIII += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 3, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                        else
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até ∞ m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 3, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalIII += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 3, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                    }
                    #endregion

                    relatorio += "<tr>";
                    relatorio += "<th>TOTAL</th>";
                    relatorio += "<th>" + totalIII + "</th>";
                    relatorio += "<th>100%</th>";
                    relatorio += "<th></th>";
                    relatorio += "<tr>";

                    int cont = 0;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        relatorio = relatorio.Replace("n" + ii + "%", Math.Round((quantidades[cont] * 100 / totalIII), 2).ToString() + "%");
                        cont++;
                    }

                    relatorio += "</table>";
                    relatorio += "<script type=\"text/javascript\"> ";
                    relatorio += "$(function(){ ";
                    relatorio += "$('table#relat3 tr:even').css('background','#E8E8E8'); ";
                    relatorio += "}); ";
                    relatorio += "</script> ";
                    PanelIIIQuarto.Controls.Add(new LiteralControl(relatorio));
                }
                else
                {
                    #region
                    relatorio = "<table id=\"relat4\" width=\"100%\" border=\"2\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#ffffff\">";
                    relatorio += "<tr>";
                    relatorio += "<th width=\"10%\">ÁREA</th>";
                    relatorio += "<th width=\"6%\">QUANTIDADE</th>";
                    relatorio += "<th width=\"4%\">%</th>";
                    relatorio += "<th width=\"6%\">BAIRROS</th>";
                    relatorio += "<tr>";
                    #endregion

                    List<double> quantidades = new List<double>();

                    #region
                    int ii;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        double quantidade = 0;

                        if (ii != 260)
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até " + (ii + 20) + " m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 4, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalIV += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), false, 4, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                        else
                        {
                            vRelatorio = "<tr>";
                            vRelatorio += "<th>" + ii + " até ∞ m²</th>";

                            quantidade = validar(t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 4, true));

                            if (quantidade == 0)
                            {
                                vRelatorio += "<td>-</td>";
                            }
                            else
                            {
                                vRelatorio += "<td>" + quantidade + "</td>";
                            }

                            totalIV += quantidade;
                            quantidades.Add(quantidade);

                            vRelatorio += "<th>n" + ii + "%</th>";
                            vRelatorio += "<th>";

                            bairros.Clear();
                            bairros = t.quantitativoDesejado(mes, ano.ToString(), Convert.ToInt16(lstTipo.SelectedValue), ii, (ii + 20), true, 4, true, true);

                            foreach (var item in bairros)
                            {
                                vRelatorio += item + ", ";
                            }
                            vRelatorio += "</th>";
                            vRelatorio += "<tr>";

                            if (quantidade != 0)
                            {
                                relatorio += vRelatorio;
                            }
                        }
                    }
                    #endregion

                    relatorio += "<tr>";
                    relatorio += "<th>TOTAL</th>";
                    relatorio += "<th>" + totalIV + "</th>";
                    relatorio += "<th>100%</th>";
                    relatorio += "<th></th>";
                    relatorio += "<tr>";

                    int cont = 0;
                    for (ii = 0; ii < 261; ii += 20)
                    {
                        relatorio = relatorio.Replace("n" + ii + "%", Math.Round((quantidades[cont] * 100 / totalIV), 2).ToString() + "%");
                        cont++;
                    }

                    relatorio += "</table>";
                    relatorio += "<script type=\"text/javascript\"> ";
                    relatorio += "$(function(){ ";
                    relatorio += "$('table#relat4 tr:even').css('background','#E8E8E8'); ";
                    relatorio += "}); ";
                    relatorio += "</script> ";
                    PanelIVQuarto.Controls.Add(new LiteralControl(relatorio));
                }

                relatorio = "<script type=\"text/javascript\"> ";
                relatorio += "$(function(){ ";
                relatorio += "$('table#relat tr:even').css('background','#E8E8E8'); ";
                relatorio += "$('pane').css('height','280px'); ";
                relatorio += "}); ";
                relatorio += "</script> ";

                Panel2.Controls.Add(new LiteralControl(relatorio));
                Panel1.Visible = true;
            }
        }

        double validar(string dado)
        {
            try
            {
                return Convert.ToDouble(dado);
            }
            catch
            {
                return 0;
            }
        }
    }
}
